package cn.tedu.nio.channel;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocketChannel ssc = ServerSocketChannel.open();
            // 绑定监听的端口
            ssc.bind(new InetSocketAddress(8090));
            // 设置为非阻塞
            ssc.configureBlocking(false);
            // 接收连接
            // 因为设置为非阻塞，所以无论是否接收到连接，都会继续向下执行
            SocketChannel sc = ssc.accept();
            // 判断是否接收到连接
            while (sc == null) {
                sc = ssc.accept();
            }
            // 接收到连接
            // 准备缓冲区接收数据
            ByteBuffer dst = ByteBuffer.allocate(1024);
            // 读取数据
            sc.read(dst);
            // 解析数据
            System.out.println(new String(dst.array(), 0, dst.position()));
            // 关闭流
            ssc.close();
        } catch (IOException ioException) {
            ioException.printStackTrace();
        }
    }
}
